package com.mytest.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mytest.mapper.ProductInfoMapper;
import com.mytest.pojo.ProductInfo;
import com.mytest.pojo.ProductInfoExample;
import com.mytest.service.ProductInfoservice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @BelongsProject: java-85-course-code
 * @BelongsPackage: com.mytest.service.impl
 * @Author: LiTongMiao
 * @Date: 2022/2/2 20:12
 * @Description: 商品显示处理
 */
@Service
public class ProductInfoserviceImpl implements ProductInfoservice {
    //切记：业务逻辑层中一定有数据访问层的对象
    //注意这里使用new productinfoexample 创建一个空条件，也就是啥条件都不要即选择所有
    //需要条件，就要new一个条件出来，再对条件进行追加
    @Autowired
    ProductInfoMapper productInfoMapper;

    @Override
    public List<ProductInfo> getAll() {
        return productInfoMapper.selectByExample(new ProductInfoExample());
    }

    //分页功能实现 (select * from 表名 limit 起始记录数=（（当前页-1）*每页条数，每页条数)
    @Override
    public PageInfo splitPage(int pageNum, int pageSize) {
        //分页插件使用pagehelper工具类完成分页设置
        PageHelper.startPage(pageNum, pageSize);

        //进行pageinfo对数据进行封装
        //进行有条件的查询操作，必须要创建productinfoexample对象
        ProductInfoExample example = new ProductInfoExample();
        //设置排序，按当前主键降序排序，因为对新插入的数据来说，如果不降序来排，到时候排序的话就是新数据在尾页，麻烦！
        //select * from product_info order by p_id desc
        example.setOrderByClause("p_id desc");
        //设置完排序后，取集合，切记：一定要在取集合之前，设置pagehelper.startpage(pagenum，pagesize)
        List<ProductInfo> list = productInfoMapper.selectByExample(example);
        //将查询到的集合封装到pageinfo对象中
        //pageinfo会做所有数据的拆分，
        PageInfo<ProductInfo> pageInfo = new PageInfo<ProductInfo>(list);
        return pageInfo;
    }
}
